#ifndef categories_HPP__
#define categories_HPP__

//Same categories than C++98 Std
//Maybe could be improved using "New Iterator Concepts" proposal - http://www.boost.org/doc/libs/1_48_0/libs/iterator/doc/new-iter-concepts.html

struct input_range_tag
{	// identifying tag for input ranges
};

struct output_range_tag
{	// identifying tag for output ranges
};

struct forward_range_tag
	: public input_range_tag, output_range_tag
{	// identifying tag for forward ranges
};

struct bidirectional_range_tag
	: public forward_range_tag
{	// identifying tag for bidirectional ranges
};

struct random_access_range_tag
	: public bidirectional_range_tag
{	// identifying tag for random-access ranges
};


#endif // categories_HPP__